/*
 * Copyright (C) 1997-2001 Id Software, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or (at
 * your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 * 02111-1307, USA.
 *
 * =======================================================================
 *
 * Quake GL prototypes
 *
 * =======================================================================
 */

#ifndef REF_QGL_H
#define REF_QGL_H

#include <GL/gl.h>

#ifndef APIENTRY
 #define APIENTRY
#endif

#define GL_SHARED_TEXTURE_PALETTE_EXT       0x81FB

#define GL_TEXTURE0_SGIS 0x835E
#define GL_TEXTURE1_SGIS 0x835F

qboolean QGL_Init ( const char *dllname );
void     QGL_Shutdown ( void );

extern void ( APIENTRY *qglAccum )( GLenum op, GLfloat value );
extern void ( APIENTRY *qglAlphaFunc )( GLenum func, GLclampf ref );
extern GLboolean ( APIENTRY *qglAreTexturesResident )( GLsizei n, const GLuint *textures, GLboolean *residences );
extern void ( APIENTRY *qglArrayElement )( GLint i );
extern void ( APIENTRY *qglBegin )( GLenum mode );
extern void ( APIENTRY *qglBindTexture )( GLenum target, GLuint texture );
extern void ( APIENTRY *qglBitmap )( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove,
		const GLubyte *bitmap );
extern void ( APIENTRY *qglBlendFunc )( GLenum sfactor, GLenum dfactor );
extern void ( APIENTRY *qglCallList )( GLuint list );
extern void ( APIENTRY *qglCallLists )( GLsizei n, GLenum type, const GLvoid *lists );
extern void ( APIENTRY *qglClear )( GLbitfield mask );
extern void ( APIENTRY *qglClearAccum )( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
extern void ( APIENTRY *qglClearColor )( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
extern void ( APIENTRY *qglClearDepth )( GLclampd depth );
extern void ( APIENTRY *qglClearIndex )( GLfloat c );
extern void ( APIENTRY *qglClearStencil )( GLint s );
extern void ( APIENTRY *qglClipPlane )( GLenum plane, const GLdouble *equation );
extern void ( APIENTRY *qglColor3b )( GLbyte red, GLbyte green, GLbyte blue );
extern void ( APIENTRY *qglColor3bv )( const GLbyte *v );
extern void ( APIENTRY *qglColor3d )( GLdouble red, GLdouble green, GLdouble blue );
extern void ( APIENTRY *qglColor3dv )( const GLdouble *v );
extern void ( APIENTRY *qglColor3f )( GLfloat red, GLfloat green, GLfloat blue );
extern void ( APIENTRY *qglColor3fv )( const GLfloat *v );
extern void ( APIENTRY *qglColor3i )( GLint red, GLint green, GLint blue );
extern void ( APIENTRY *qglColor3iv )( const GLint *v );
extern void ( APIENTRY *qglColor3s )( GLshort red, GLshort green, GLshort blue );
extern void ( APIENTRY *qglColor3sv )( const GLshort *v );
extern void ( APIENTRY *qglColor3ub )( GLubyte red, GLubyte green, GLubyte blue );
extern void ( APIENTRY *qglColor3ubv )( const GLubyte *v );
extern void ( APIENTRY *qglColor3ui )( GLuint red, GLuint green, GLuint blue );
extern void ( APIENTRY *qglColor3uiv )( const GLuint *v );
extern void ( APIENTRY *qglColor3us )( GLushort red, GLushort green, GLushort blue );
extern void ( APIENTRY *qglColor3usv )( const GLushort *v );
extern void ( APIENTRY *qglColor4b )( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha );
extern void ( APIENTRY *qglColor4bv )( const GLbyte *v );
extern void ( APIENTRY *qglColor4d )( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha );
extern void ( APIENTRY *qglColor4dv )( const GLdouble *v );
extern void ( APIENTRY *qglColor4f )( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
extern void ( APIENTRY *qglColor4fv )( const GLfloat *v );
extern void ( APIENTRY *qglColor4i )( GLint red, GLint green, GLint blue, GLint alpha );
extern void ( APIENTRY *qglColor4iv )( const GLint *v );
extern void ( APIENTRY *qglColor4s )( GLshort red, GLshort green, GLshort blue, GLshort alpha );
extern void ( APIENTRY *qglColor4sv )( const GLshort *v );
extern void ( APIENTRY *qglColor4ub )( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
extern void ( APIENTRY *qglColor4ubv )( const GLubyte *v );
extern void ( APIENTRY *qglColor4ui )( GLuint red, GLuint green, GLuint blue, GLuint alpha );
extern void ( APIENTRY *qglColor4uiv )( const GLuint *v );
extern void ( APIENTRY *qglColor4us )( GLushort red, GLushort green, GLushort blue, GLushort alpha );
extern void ( APIENTRY *qglColor4usv )( const GLushort *v );
extern void ( APIENTRY *qglColorMask )( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
extern void ( APIENTRY *qglColorMaterial )( GLenum face, GLenum mode );
extern void ( APIENTRY *qglColorPointer )( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer );
extern void ( APIENTRY *qglCopyPixels )( GLint x, GLint y, GLsizei width, GLsizei height, GLenum type );
extern void ( APIENTRY *qglCopyTexImage1D )( GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width,
		GLint border );
extern void ( APIENTRY *qglCopyTexImage2D )( GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width,
		GLsizei height, GLint border );
extern void ( APIENTRY *qglCopyTexSubImage1D )( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width );
extern void ( APIENTRY *qglCopyTexSubImage2D )( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y,
		GLsizei width, GLsizei height );
extern void ( APIENTRY *qglCullFace )( GLenum mode );
extern void ( APIENTRY *qglDeleteLists )( GLuint list, GLsizei range );
extern void ( APIENTRY *qglDeleteTextures )( GLsizei n, const GLuint *textures );
extern void ( APIENTRY *qglDepthFunc )( GLenum func );
extern void ( APIENTRY *qglDepthMask )( GLboolean flag );
extern void ( APIENTRY *qglDepthRange )( GLclampd zNear, GLclampd zFar );
extern void ( APIENTRY *qglDisable )( GLenum cap );
extern void ( APIENTRY *qglDisableClientState )( GLenum array );
extern void ( APIENTRY *qglDrawArrays )( GLenum mode, GLint first, GLsizei count );
extern void ( APIENTRY *qglDrawBuffer )( GLenum mode );
extern void ( APIENTRY *qglDrawElements )( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices );
extern void ( APIENTRY *qglDrawPixels )( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels );
extern void ( APIENTRY *qglEdgeFlag )( GLboolean flag );
extern void ( APIENTRY *qglEdgeFlagPointer )( GLsizei stride, const GLvoid *pointer );
extern void ( APIENTRY *qglEdgeFlagv )( const GLboolean *flag );
extern void ( APIENTRY *qglEnable )( GLenum cap );
extern void ( APIENTRY *qglEnableClientState )( GLenum array );
extern void ( APIENTRY *qglEnd )( void );
extern void ( APIENTRY *qglEndList )( void );
extern void ( APIENTRY *qglEvalCoord1d )( GLdouble u );
extern void ( APIENTRY *qglEvalCoord1dv )( const GLdouble *u );
extern void ( APIENTRY *qglEvalCoord1f )( GLfloat u );
extern void ( APIENTRY *qglEvalCoord1fv )( const GLfloat *u );
extern void ( APIENTRY *qglEvalCoord2d )( GLdouble u, GLdouble v );
extern void ( APIENTRY *qglEvalCoord2dv )( const GLdouble *u );
extern void ( APIENTRY *qglEvalCoord2f )( GLfloat u, GLfloat v );
extern void ( APIENTRY *qglEvalCoord2fv )( const GLfloat *u );
extern void ( APIENTRY *qglEvalMesh1 )( GLenum mode, GLint i1, GLint i2 );
extern void ( APIENTRY *qglEvalMesh2 )( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
extern void ( APIENTRY *qglEvalPoint1 )( GLint i );
extern void ( APIENTRY *qglEvalPoint2 )( GLint i, GLint j );
extern void ( APIENTRY *qglFeedbackBuffer )( GLsizei size, GLenum type, GLfloat *buffer );
extern void ( APIENTRY *qglFinish )( void );
extern void ( APIENTRY *qglFlush )( void );
extern void ( APIENTRY *qglFogf )( GLenum pname, GLfloat param );
extern void ( APIENTRY *qglFogfv )( GLenum pname, const GLfloat *params );
extern void ( APIENTRY *qglFogi )( GLenum pname, GLint param );
extern void ( APIENTRY *qglFogiv )( GLenum pname, const GLint *params );
extern void ( APIENTRY *qglFrontFace )( GLenum mode );
extern void ( APIENTRY *qglFrustum )( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar );
extern GLuint ( APIENTRY *qglGenLists )( GLsizei range );
extern void ( APIENTRY *qglGenTextures )( GLsizei n, GLuint *textures );
extern void ( APIENTRY *qglGetBooleanv )( GLenum pname, GLboolean *params );
extern void ( APIENTRY *qglGetClipPlane )( GLenum plane, GLdouble *equation );
extern void ( APIENTRY *qglGetDoublev )( GLenum pname, GLdouble *params );
extern GLenum ( APIENTRY *qglGetError )( void );
extern void ( APIENTRY *qglGetFloatv )( GLenum pname, GLfloat *params );
extern void ( APIENTRY *qglGetIntegerv )( GLenum pname, GLint *params );
extern void ( APIENTRY *qglGetLightfv )( GLenum light, GLenum pname, GLfloat *params );
extern void ( APIENTRY *qglGetLightiv )( GLenum light, GLenum pname, GLint *params );
extern void ( APIENTRY *qglGetMapdv )( GLenum target, GLenum query, GLdouble *v );
extern void ( APIENTRY *qglGetMapfv )( GLenum target, GLenum query, GLfloat *v );
extern void ( APIENTRY *qglGetMapiv )( GLenum target, GLenum query, GLint *v );
extern void ( APIENTRY *qglGetMaterialfv )( GLenum face, GLenum pname, GLfloat *params );
extern void ( APIENTRY *qglGetMaterialiv )( GLenum face, GLenum pname, GLint *params );
extern void ( APIENTRY *qglGetPixelMapfv )( GLenum map, GLfloat *values );
extern void ( APIENTRY *qglGetPixelMapuiv )( GLenum map, GLuint *values );
extern void ( APIENTRY *qglGetPixelMapusv )( GLenum map, GLushort *values );
extern void ( APIENTRY *qglGetPointerv )( GLenum pname, GLvoid **params );
extern void ( APIENTRY *qglGetPolygonStipple )( GLubyte *mask );
extern const GLubyte * ( APIENTRY * qglGetString )(GLenum name);
extern void ( APIENTRY *qglGetTexEnvfv )( GLenum target, GLenum pname, GLfloat *params );
extern void ( APIENTRY *qglGetTexEnviv )( GLenum target, GLenum pname, GLint *params );
extern void ( APIENTRY *qglGetTexGendv )( GLenum coord, GLenum pname, GLdouble *params );
extern void ( APIENTRY *qglGetTexGenfv )( GLenum coord, GLenum pname, GLfloat *params );
extern void ( APIENTRY *qglGetTexGeniv )( GLenum coord, GLenum pname, GLint *params );
extern void ( APIENTRY *qglGetTexImage )( GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels );
extern void ( APIENTRY *qglGetTexLevelParameterfv )( GLenum target, GLint level, GLenum pname, GLfloat *params );
extern void ( APIENTRY *qglGetTexLevelParameteriv )( GLenum target, GLint level, GLenum pname, GLint *params );
extern void ( APIENTRY *qglGetTexParameterfv )( GLenum target, GLenum pname, GLfloat *params );
extern void ( APIENTRY *qglGetTexParameteriv )( GLenum target, GLenum pname, GLint *params );
extern void ( APIENTRY *qglHint )( GLenum target, GLenum mode );
extern void ( APIENTRY *qglIndexMask )( GLuint mask );
extern void ( APIENTRY *qglIndexPointer )( GLenum type, GLsizei stride, const GLvoid *pointer );
extern void ( APIENTRY *qglIndexd )( GLdouble c );
extern void ( APIENTRY *qglIndexdv )( const GLdouble *c );
extern void ( APIENTRY *qglIndexf )( GLfloat c );
extern void ( APIENTRY *qglIndexfv )( const GLfloat *c );
extern void ( APIENTRY *qglIndexi )( GLint c );
extern void ( APIENTRY *qglIndexiv )( const GLint *c );
extern void ( APIENTRY *qglIndexs )( GLshort c );
extern void ( APIENTRY *qglIndexsv )( const GLshort *c );
extern void ( APIENTRY *qglIndexub )( GLubyte c );
extern void ( APIENTRY *qglIndexubv )( const GLubyte *c );
extern void ( APIENTRY *qglInitNames )( void );
extern void ( APIENTRY *qglInterleavedArrays )( GLenum format, GLsizei stride, const GLvoid *pointer );
extern GLboolean ( APIENTRY *qglIsEnabled )( GLenum cap );
extern GLboolean ( APIENTRY *qglIsList )( GLuint list );
extern GLboolean ( APIENTRY *qglIsTexture )( GLuint texture );
extern void ( APIENTRY *qglLightModelf )( GLenum pname, GLfloat param );
extern void ( APIENTRY *qglLightModelfv )( GLenum pname, const GLfloat *params );
extern void ( APIENTRY *qglLightModeli )( GLenum pname, GLint param );
extern void ( APIENTRY *qglLightModeliv )( GLenum pname, const GLint *params );
extern void ( APIENTRY *qglLightf )( GLenum light, GLenum pname, GLfloat param );
extern void ( APIENTRY *qglLightfv )( GLenum light, GLenum pname, const GLfloat *params );
extern void ( APIENTRY *qglLighti )( GLenum light, GLenum pname, GLint param );
extern void ( APIENTRY *qglLightiv )( GLenum light, GLenum pname, const GLint *params );
extern void ( APIENTRY *qglLineStipple )( GLint factor, GLushort pattern );
extern void ( APIENTRY *qglLineWidth )( GLfloat width );
extern void ( APIENTRY *qglListBase )( GLuint base );
extern void ( APIENTRY *qglLoadIdentity )( void );
extern void ( APIENTRY *qglLoadMatrixd )( const GLdouble *m );
extern void ( APIENTRY *qglLoadMatrixf )( const GLfloat *m );
extern void ( APIENTRY *qglLoadName )( GLuint name );
extern void ( APIENTRY *qglLogicOp )( GLenum opcode );
extern void ( APIENTRY *qglMap1d )( GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points );
extern void ( APIENTRY *qglMap1f )( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points );
extern void ( APIENTRY *qglMap2d )( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1,
		GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points );
extern void ( APIENTRY *qglMap2f )( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2,
		GLint vstride, GLint vorder, const GLfloat *points );
extern void ( APIENTRY *qglMapGrid1d )( GLint un, GLdouble u1, GLdouble u2 );
extern void ( APIENTRY *qglMapGrid1f )( GLint un, GLfloat u1, GLfloat u2 );
extern void ( APIENTRY *qglMapGrid2d )( GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 );
extern void ( APIENTRY *qglMapGrid2f )( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 );
extern void ( APIENTRY *qglMaterialf )( GLenum face, GLenum pname, GLfloat param );
extern void ( APIENTRY *qglMaterialfv )( GLenum face, GLenum pname, const GLfloat *params );
extern void ( APIENTRY *qglMateriali )( GLenum face, GLenum pname, GLint param );
extern void ( APIENTRY *qglMaterialiv )( GLenum face, GLenum pname, const GLint *params );
extern void ( APIENTRY *qglMatrixMode )( GLenum mode );
extern void ( APIENTRY *qglMultMatrixd )( const GLdouble *m );
extern void ( APIENTRY *qglMultMatrixf )( const GLfloat *m );
extern void ( APIENTRY *qglNewList )( GLuint list, GLenum mode );
extern void ( APIENTRY *qglNormal3b )( GLbyte nx, GLbyte ny, GLbyte nz );
extern void ( APIENTRY *qglNormal3bv )( const GLbyte *v );
extern void ( APIENTRY *qglNormal3d )( GLdouble nx, GLdouble ny, GLdouble nz );
extern void ( APIENTRY *qglNormal3dv )( const GLdouble *v );
extern void ( APIENTRY *qglNormal3f )( GLfloat nx, GLfloat ny, GLfloat nz );
extern void ( APIENTRY *qglNormal3fv )( const GLfloat *v );
extern void ( APIENTRY *qglNormal3i )( GLint nx, GLint ny, GLint nz );
extern void ( APIENTRY *qglNormal3iv )( const GLint *v );
extern void ( APIENTRY *qglNormal3s )( GLshort nx, GLshort ny, GLshort nz );
extern void ( APIENTRY *qglNormal3sv )( const GLshort *v );
extern void ( APIENTRY *qglNormalPointer )( GLenum type, GLsizei stride, const GLvoid *pointer );
extern void ( APIENTRY *qglOrtho )( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar );
extern void ( APIENTRY *qglPassThrough )( GLfloat token );
extern void ( APIENTRY *qglPixelMapfv )( GLenum map, GLsizei mapsize, const GLfloat *values );
extern void ( APIENTRY *qglPixelMapuiv )( GLenum map, GLsizei mapsize, const GLuint *values );
extern void ( APIENTRY *qglPixelMapusv )( GLenum map, GLsizei mapsize, const GLushort *values );
extern void ( APIENTRY *qglPixelStoref )( GLenum pname, GLfloat param );
extern void ( APIENTRY *qglPixelStorei )( GLenum pname, GLint param );
extern void ( APIENTRY *qglPixelTransferf )( GLenum pname, GLfloat param );
extern void ( APIENTRY *qglPixelTransferi )( GLenum pname, GLint param );
extern void ( APIENTRY *qglPixelZoom )( GLfloat xfactor, GLfloat yfactor );
extern void ( APIENTRY *qglPointSize )( GLfloat size );
extern void ( APIENTRY *qglPolygonMode )( GLenum face, GLenum mode );
extern void ( APIENTRY *qglPolygonOffset )( GLfloat factor, GLfloat units );
extern void ( APIENTRY *qglPolygonStipple )( const GLubyte *mask );
extern void ( APIENTRY *qglPopAttrib )( void );
extern void ( APIENTRY *qglPopClientAttrib )( void );
extern void ( APIENTRY *qglPopMatrix )( void );
extern void ( APIENTRY *qglPopName )( void );
extern void ( APIENTRY *qglPrioritizeTextures )( GLsizei n, const GLuint *textures, const GLclampf *priorities );
extern void ( APIENTRY *qglPushAttrib )( GLbitfield mask );
extern void ( APIENTRY *qglPushClientAttrib )( GLbitfield mask );
extern void ( APIENTRY *qglPushMatrix )( void );
extern void ( APIENTRY *qglPushName )( GLuint name );
extern void ( APIENTRY *qglRasterPos2d )( GLdouble x, GLdouble y );
extern void ( APIENTRY *qglRasterPos2dv )( const GLdouble *v );
extern void ( APIENTRY *qglRasterPos2f )( GLfloat x, GLfloat y );
extern void ( APIENTRY *qglRasterPos2fv )( const GLfloat *v );
extern void ( APIENTRY *qglRasterPos2i )( GLint x, GLint y );
extern void ( APIENTRY *qglRasterPos2iv )( const GLint *v );
extern void ( APIENTRY *qglRasterPos2s )( GLshort x, GLshort y );
extern void ( APIENTRY *qglRasterPos2sv )( const GLshort *v );
extern void ( APIENTRY *qglRasterPos3d )( GLdouble x, GLdouble y, GLdouble z );
extern void ( APIENTRY *qglRasterPos3dv )( const GLdouble *v );
extern void ( APIENTRY *qglRasterPos3f )( GLfloat x, GLfloat y, GLfloat z );
extern void ( APIENTRY *qglRasterPos3fv )( const GLfloat *v );
extern void ( APIENTRY *qglRasterPos3i )( GLint x, GLint y, GLint z );
extern void ( APIENTRY *qglRasterPos3iv )( const GLint *v );
extern void ( APIENTRY *qglRasterPos3s )( GLshort x, GLshort y, GLshort z );
extern void ( APIENTRY *qglRasterPos3sv )( const GLshort *v );
extern void ( APIENTRY *qglRasterPos4d )( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
extern void ( APIENTRY *qglRasterPos4dv )( const GLdouble *v );
extern void ( APIENTRY *qglRasterPos4f )( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
extern void ( APIENTRY *qglRasterPos4fv )( const GLfloat *v );
extern void ( APIENTRY *qglRasterPos4i )( GLint x, GLint y, GLint z, GLint w );
extern void ( APIENTRY *qglRasterPos4iv )( const GLint *v );
extern void ( APIENTRY *qglRasterPos4s )( GLshort x, GLshort y, GLshort z, GLshort w );
extern void ( APIENTRY *qglRasterPos4sv )( const GLshort *v );
extern void ( APIENTRY *qglReadBuffer )( GLenum mode );
extern void ( APIENTRY *qglReadPixels )( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
		GLvoid *pixels );
extern void ( APIENTRY *qglRectd )( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );
extern void ( APIENTRY *qglRectdv )( const GLdouble *v1, const GLdouble *v2 );
extern void ( APIENTRY *qglRectf )( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );
extern void ( APIENTRY *qglRectfv )( const GLfloat *v1, const GLfloat *v2 );
extern void ( APIENTRY *qglRecti )( GLint x1, GLint y1, GLint x2, GLint y2 );
extern void ( APIENTRY *qglRectiv )( const GLint *v1, const GLint *v2 );
extern void ( APIENTRY *qglRects )( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );
extern void ( APIENTRY *qglRectsv )( const GLshort *v1, const GLshort *v2 );
extern GLint ( APIENTRY *qglRenderMode )( GLenum mode );
extern void ( APIENTRY *qglRotated )( GLdouble angle, GLdouble x, GLdouble y, GLdouble z );
extern void ( APIENTRY *qglRotatef )( GLfloat angle, GLfloat x, GLfloat y, GLfloat z );
extern void ( APIENTRY *qglScaled )( GLdouble x, GLdouble y, GLdouble z );
extern void ( APIENTRY *qglScalef )( GLfloat x, GLfloat y, GLfloat z );
extern void ( APIENTRY *qglScissor )( GLint x, GLint y, GLsizei width, GLsizei height );
extern void ( APIENTRY *qglSelectBuffer )( GLsizei size, GLuint *buffer );
extern void ( APIENTRY *qglShadeModel )( GLenum mode );
extern void ( APIENTRY *qglStencilFunc )( GLenum func, GLint ref, GLuint mask );
extern void ( APIENTRY *qglStencilMask )( GLuint mask );
extern void ( APIENTRY *qglStencilOp )( GLenum fail, GLenum zfail, GLenum zpass );
extern void ( APIENTRY *qglTexCoord1d )( GLdouble s );
extern void ( APIENTRY *qglTexCoord1dv )( const GLdouble *v );
extern void ( APIENTRY *qglTexCoord1f )( GLfloat s );
extern void ( APIENTRY *qglTexCoord1fv )( const GLfloat *v );
extern void ( APIENTRY *qglTexCoord1i )( GLint s );
extern void ( APIENTRY *qglTexCoord1iv )( const GLint *v );
extern void ( APIENTRY *qglTexCoord1s )( GLshort s );
extern void ( APIENTRY *qglTexCoord1sv )( const GLshort *v );
extern void ( APIENTRY *qglTexCoord2d )( GLdouble s, GLdouble t );
extern void ( APIENTRY *qglTexCoord2dv )( const GLdouble *v );
extern void ( APIENTRY *qglTexCoord2f )( GLfloat s, GLfloat t );
extern void ( APIENTRY *qglTexCoord2fv )( const GLfloat *v );
extern void ( APIENTRY *qglTexCoord2i )( GLint s, GLint t );
extern void ( APIENTRY *qglTexCoord2iv )( const GLint *v );
extern void ( APIENTRY *qglTexCoord2s )( GLshort s, GLshort t );
extern void ( APIENTRY *qglTexCoord2sv )( const GLshort *v );
extern void ( APIENTRY *qglTexCoord3d )( GLdouble s, GLdouble t, GLdouble r );
extern void ( APIENTRY *qglTexCoord3dv )( const GLdouble *v );
extern void ( APIENTRY *qglTexCoord3f )( GLfloat s, GLfloat t, GLfloat r );
extern void ( APIENTRY *qglTexCoord3fv )( const GLfloat *v );
extern void ( APIENTRY *qglTexCoord3i )( GLint s, GLint t, GLint r );
extern void ( APIENTRY *qglTexCoord3iv )( const GLint *v );
extern void ( APIENTRY *qglTexCoord3s )( GLshort s, GLshort t, GLshort r );
extern void ( APIENTRY *qglTexCoord3sv )( const GLshort *v );
extern void ( APIENTRY *qglTexCoord4d )( GLdouble s, GLdouble t, GLdouble r, GLdouble q );
extern void ( APIENTRY *qglTexCoord4dv )( const GLdouble *v );
extern void ( APIENTRY *qglTexCoord4f )( GLfloat s, GLfloat t, GLfloat r, GLfloat q );
extern void ( APIENTRY *qglTexCoord4fv )( const GLfloat *v );
extern void ( APIENTRY *qglTexCoord4i )( GLint s, GLint t, GLint r, GLint q );
extern void ( APIENTRY *qglTexCoord4iv )( const GLint *v );
extern void ( APIENTRY *qglTexCoord4s )( GLshort s, GLshort t, GLshort r, GLshort q );
extern void ( APIENTRY *qglTexCoord4sv )( const GLshort *v );
extern void ( APIENTRY *qglTexCoordPointer )( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer );
extern void ( APIENTRY *qglTexEnvf )( GLenum target, GLenum pname, GLfloat param );
extern void ( APIENTRY *qglTexEnvfv )( GLenum target, GLenum pname, const GLfloat *params );
extern void ( APIENTRY *qglTexEnvi )( GLenum target, GLenum pname, GLint param );
extern void ( APIENTRY *qglTexEnviv )( GLenum target, GLenum pname, const GLint *params );
extern void ( APIENTRY *qglTexGend )( GLenum coord, GLenum pname, GLdouble param );
extern void ( APIENTRY *qglTexGendv )( GLenum coord, GLenum pname, const GLdouble *params );
extern void ( APIENTRY *qglTexGenf )( GLenum coord, GLenum pname, GLfloat param );
extern void ( APIENTRY *qglTexGenfv )( GLenum coord, GLenum pname, const GLfloat *params );
extern void ( APIENTRY *qglTexGeni )( GLenum coord, GLenum pname, GLint param );
extern void ( APIENTRY *qglTexGeniv )( GLenum coord, GLenum pname, const GLint *params );
extern void ( APIENTRY *qglTexImage1D )( GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border,
		GLenum format, GLenum type, const GLvoid *pixels );
extern void ( APIENTRY *qglTexImage2D )( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
		GLint border, GLenum format, GLenum type, const GLvoid *pixels );
extern void ( APIENTRY *qglTexParameterf )( GLenum target, GLenum pname, GLfloat param );
extern void ( APIENTRY *qglTexParameterfv )( GLenum target, GLenum pname, const GLfloat *params );
extern void ( APIENTRY *qglTexParameteri )( GLenum target, GLenum pname, GLint param );
extern void ( APIENTRY *qglTexParameteriv )( GLenum target, GLenum pname, const GLint *params );
extern void ( APIENTRY *qglTexSubImage1D )( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type,
		const GLvoid *pixels );
extern void ( APIENTRY *qglTexSubImage2D )( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
		GLsizei height, GLenum format, GLenum type, const GLvoid *pixels );
extern void ( APIENTRY *qglTranslated )( GLdouble x, GLdouble y, GLdouble z );
extern void ( APIENTRY *qglTranslatef )( GLfloat x, GLfloat y, GLfloat z );
extern void ( APIENTRY *qglVertex2d )( GLdouble x, GLdouble y );
extern void ( APIENTRY *qglVertex2dv )( const GLdouble *v );
extern void ( APIENTRY *qglVertex2f )( GLfloat x, GLfloat y );
extern void ( APIENTRY *qglVertex2fv )( const GLfloat *v );
extern void ( APIENTRY *qglVertex2i )( GLint x, GLint y );
extern void ( APIENTRY *qglVertex2iv )( const GLint *v );
extern void ( APIENTRY *qglVertex2s )( GLshort x, GLshort y );
extern void ( APIENTRY *qglVertex2sv )( const GLshort *v );
extern void ( APIENTRY *qglVertex3d )( GLdouble x, GLdouble y, GLdouble z );
extern void ( APIENTRY *qglVertex3dv )( const GLdouble *v );
extern void ( APIENTRY *qglVertex3f )( GLfloat x, GLfloat y, GLfloat z );
extern void ( APIENTRY *qglVertex3fv )( const GLfloat *v );
extern void ( APIENTRY *qglVertex3i )( GLint x, GLint y, GLint z );
extern void ( APIENTRY *qglVertex3iv )( const GLint *v );
extern void ( APIENTRY *qglVertex3s )( GLshort x, GLshort y, GLshort z );
extern void ( APIENTRY *qglVertex3sv )( const GLshort *v );
extern void ( APIENTRY *qglVertex4d )( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
extern void ( APIENTRY *qglVertex4dv )( const GLdouble *v );
extern void ( APIENTRY *qglVertex4f )( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
extern void ( APIENTRY *qglVertex4fv )( const GLfloat *v );
extern void ( APIENTRY *qglVertex4i )( GLint x, GLint y, GLint z, GLint w );
extern void ( APIENTRY *qglVertex4iv )( const GLint *v );
extern void ( APIENTRY *qglVertex4s )( GLshort x, GLshort y, GLshort z, GLshort w );
extern void ( APIENTRY *qglVertex4sv )( const GLshort *v );
extern void ( APIENTRY *qglVertexPointer )( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer );
extern void ( APIENTRY *qglViewport )( GLint x, GLint y, GLsizei width, GLsizei height );

extern void ( APIENTRY *qglPointParameterfEXT )( GLenum param, GLfloat value );
extern void ( APIENTRY *qglPointParameterfvEXT )( GLenum param, const GLfloat *value );
extern void ( APIENTRY *qglColorTableEXT )( GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid * );

extern void ( APIENTRY *qglLockArraysEXT )( int, int );

extern void ( APIENTRY *qglUnlockArraysEXT )( void );
extern void ( APIENTRY *qglMTexCoord2fSGIS )( GLenum, GLfloat, GLfloat );
extern void ( APIENTRY *qglSelectTextureSGIS )( GLenum );

extern void ( APIENTRY *qglActiveTextureARB )( GLenum );
extern void ( APIENTRY *qglClientActiveTextureARB )( GLenum );

/* local function in dll */
extern void *qwglGetProcAddress ( char *symbol );

void Fake_glColorTableEXT ( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table );

extern int QGL_TEXTURE0, QGL_TEXTURE1;

#ifndef GL_EXT_texture_env_combine
 #define GL_COMBINE_EXT                    0x8570
 #define GL_COMBINE_RGB_EXT                0x8571
 #define GL_COMBINE_ALPHA_EXT              0x8572
 #define GL_RGB_SCALE_EXT                  0x8573
 #define GL_ADD_SIGNED_EXT                 0x8574
 #define GL_INTERPOLATE_EXT                0x8575
 #define GL_CONSTANT_EXT                   0x8576
 #define GL_PRIMARY_COLOR_EXT              0x8577
 #define GL_PREVIOUS_EXT                   0x8578
 #define GL_SOURCE0_RGB_EXT                0x8580
 #define GL_SOURCE1_RGB_EXT                0x8581
 #define GL_SOURCE2_RGB_EXT                0x8582
 #define GL_SOURCE3_RGB_EXT                0x8583
 #define GL_SOURCE4_RGB_EXT                0x8584
 #define GL_SOURCE5_RGB_EXT                0x8585
 #define GL_SOURCE6_RGB_EXT                0x8586
 #define GL_SOURCE7_RGB_EXT                0x8587
 #define GL_SOURCE0_ALPHA_EXT              0x8588
 #define GL_SOURCE1_ALPHA_EXT              0x8589
 #define GL_SOURCE2_ALPHA_EXT              0x858A
 #define GL_SOURCE3_ALPHA_EXT              0x858B
 #define GL_SOURCE4_ALPHA_EXT              0x858C
 #define GL_SOURCE5_ALPHA_EXT              0x858D
 #define GL_SOURCE6_ALPHA_EXT              0x858E
 #define GL_SOURCE7_ALPHA_EXT              0x858F
 #define GL_OPERAND0_RGB_EXT               0x8590
 #define GL_OPERAND1_RGB_EXT               0x8591
 #define GL_OPERAND2_RGB_EXT               0x8592
 #define GL_OPERAND3_RGB_EXT               0x8593
 #define GL_OPERAND4_RGB_EXT               0x8594
 #define GL_OPERAND5_RGB_EXT               0x8595
 #define GL_OPERAND6_RGB_EXT               0x8596
 #define GL_OPERAND7_RGB_EXT               0x8597
 #define GL_OPERAND0_ALPHA_EXT             0x8598
 #define GL_OPERAND1_ALPHA_EXT             0x8599
 #define GL_OPERAND2_ALPHA_EXT             0x859A
 #define GL_OPERAND3_ALPHA_EXT             0x859B
 #define GL_OPERAND4_ALPHA_EXT             0x859C
 #define GL_OPERAND5_ALPHA_EXT             0x859D
 #define GL_OPERAND6_ALPHA_EXT             0x859E
 #define GL_OPERAND7_ALPHA_EXT             0x859F
#endif

#endif

